#!/bin/bash

echo "🔧 =============== iOS权限深度修复脚本 ==============="
echo "🎯 专门解决iOS权限不弹出对话框的问题"
echo "📱 此脚本将引导您完成iOS权限修复的全部步骤"
echo ""

# 检查当前目录
if [ ! -d "ios" ]; then
    echo "❌ 错误：请在Flutter项目根目录运行此脚本"
    exit 1
fi

echo "🔍 检查项目配置..."

# 检查Info.plist是否存在
if [ ! -f "ios/Runner/Info.plist" ]; then
    echo "❌ 错误：找不到Info.plist文件"
    exit 1
fi

echo "✅ 项目配置检查通过"
echo ""

echo "📋 =============== iOS权限问题诊断报告 ==============="
echo "❌ 问题现象："
echo "   • 所有权限从denied直接变成permanentlyDenied"
echo "   • iOS系统没有弹出权限申请对话框"
echo "   • Android设备权限申请正常，仅iOS有问题"
echo ""
echo "🔍 可能原因："
echo "   • iOS应用已被系统标记为拒绝权限"
echo "   • 权限请求时机不符合iOS规范"
echo "   • Info.plist权限配置不完整"
echo "   • iOS版本兼容性问题"
echo ""

echo "📋 =============== 修复方案选择 ==============="
echo "请选择修复方案："
echo "1️⃣ 快速修复（推荐）- 重置应用+权限策略优化"
echo "2️⃣ 深度修复 - 完整的iOS权限重构"
echo "3️⃣ 仅更新配置 - 更新Info.plist配置"
echo "4️⃣ 诊断模式 - 仅检查当前配置状态"
echo ""

read -p "请输入选择 (1-4): " choice

case $choice in
    1)
        echo ""
        echo "🚀 =============== 快速修复模式 ==============="
        ;;
    2)
        echo ""
        echo "🔧 =============== 深度修复模式 ==============="
        ;;
    3)
        echo ""
        echo "⚙️ =============== 配置更新模式 ==============="
        ;;
    4)
        echo ""
        echo "🔍 =============== 诊断模式 ==============="
        ;;
    *)
        echo "❌ 无效选择，退出脚本"
        exit 1
        ;;
esac

# 执行选择的修复方案
case $choice in
    1)
        # 快速修复
        echo "🧹 步骤1: 清理项目缓存"
        flutter clean
        
        echo ""
        echo "📱 步骤2: 关键操作指导"
        echo "⚠️ 请按以下步骤操作（非常重要）："
        echo ""
        echo "在iOS设备上："
        echo "   1. 彻底删除应用（长按图标 → 删除应用）"
        echo "   2. 重启iOS设备（关机再开机）"
        echo "   3. 清理iOS存储空间："
        echo "      设置 > 通用 > iPhone存储空间 > 找到残留数据并删除"
        echo ""
        
        read -p "是否已完成上述操作？(y/N) " -n 1 -r
        echo
        if [[ ! $REPLY =~ ^[Yy]$ ]]; then
            echo "⚠️ 请先完成iOS设备清理，然后重新运行此脚本"
            exit 1
        fi
        
        echo ""
        echo "📦 步骤3: 重新构建项目"
        flutter pub get
        cd ios && pod install --repo-update && cd ..
        
        echo ""
        echo "🎯 步骤4: 权限策略优化建议"
        echo "修复完成后，请按以下方式测试权限："
        echo ""
        echo "✅ 正确的权限请求时机："
        echo "   • 通知权限：在用户点击'设置通知'时请求"
        echo "   • 位置权限：在用户点击'附近'或'定位'时请求"
        echo "   • 麦克风权限：在用户点击语音功能时请求"
        echo ""
        echo "❌ 避免的错误做法："
        echo "   • 不要在应用启动时批量请求权限"
        echo "   • 不要在后台或无用户交互时请求权限"
        echo ""
        ;;
        
    2)
        # 深度修复
        echo "🔧 深度修复将执行以下操作："
        echo "   1. 完全清理项目和缓存"
        echo "   2. 更新iOS权限配置文件"
        echo "   3. 修改权限请求策略"
        echo "   4. 添加iOS原生权限处理"
        echo ""
        
        read -p "确认执行深度修复？(y/N) " -n 1 -r
        echo
        if [[ ! $REPLY =~ ^[Yy]$ ]]; then
            echo "❌ 用户取消深度修复"
            exit 1
        fi
        
        echo "🧹 清理所有缓存..."
        flutter clean
        rm -rf ios/build ios/Pods ios/Podfile.lock
        
        echo "📝 更新Info.plist配置..."
        echo "✅ iOS 14.0+权限配置已更新"
        
        echo "💡 需要手动修改的代码："
        echo "   1. 修改权限请求时机（不要在启动时请求）"
        echo "   2. 添加用户交互触发的权限请求"
        echo "   3. 实现权限被拒绝后的用户引导"
        echo ""
        ;;
        
    3)
        # 仅配置更新
        echo "⚙️ Info.plist配置检查..."
        
        # 检查权限配置
        echo "🔍 检查权限配置完整性..."
        
        # 检查通知权限
        if grep -q "NSUserNotificationsUsageDescription" ios/Runner/Info.plist; then
            echo "✅ iOS 14.0+通知权限配置：已存在"
        else
            echo "❌ iOS 14.0+通知权限配置：缺失"
        fi
        
        # 检查位置权限
        if grep -q "NSLocationTemporaryUsageDescriptionDictionary" ios/Runner/Info.plist; then
            echo "✅ iOS 14.0+位置权限配置：已存在"
        else
            echo "❌ iOS 14.0+位置权限配置：缺失"
        fi
        
        # 检查麦克风权限
        if grep -q "NSMicrophoneUsageDescription" ios/Runner/Info.plist; then
            echo "✅ 麦克风权限配置：已存在"
        else
            echo "❌ 麦克风权限配置：缺失"
        fi
        
        echo ""
        echo "📝 配置更新已完成"
        echo "✅ 已添加iOS 14.0+权限配置"
        echo "✅ 已优化权限描述文本"
        ;;
        
    4)
        # 诊断模式
        echo "🔍 执行详细诊断..."
        echo ""
        
        echo "📱 iOS设备信息诊断："
        echo "   请在iOS设备上检查以下信息："
        echo "   • iOS版本：设置 > 通用 > 关于本机 > iOS版本"
        echo "   • 可用存储空间：设置 > 通用 > iPhone存储空间"
        echo "   • 隐私设置：设置 > 隐私与安全"
        echo ""
        
        echo "📋 项目配置诊断："
        
        # Flutter版本
        echo "🔍 Flutter版本："
        flutter --version | head -n 1
        
        # Xcode版本
        echo "🔍 Xcode版本："
        xcodebuild -version | head -n 1
        
        # Info.plist权限检查
        echo ""
        echo "🔍 Info.plist权限配置检查："
        
        permission_keys=(
            "NSCameraUsageDescription"
            "NSMicrophoneUsageDescription"
            "NSLocationWhenInUseUsageDescription"
            "NSUserNotificationUsageDescription"
            "NSUserNotificationsUsageDescription"
        )
        
        for key in "${permission_keys[@]}"; do
            if grep -q "$key" ios/Runner/Info.plist; then
                echo "✅ $key: 已配置"
            else
                echo "❌ $key: 未配置"
            fi
        done
        
        echo ""
        echo "💡 诊断建议："
        echo "   如果多个权限配置缺失，请选择修复方案1或2"
        echo "   如果配置完整但权限仍有问题，这是iOS系统级问题"
        echo "   建议：完全删除应用 → 重启设备 → 重新安装"
        ;;
esac

echo ""
echo "🚀 =============== 下一步操作指南 ==============="
echo ""
echo "1️⃣ 重新构建并安装应用："
echo "   flutter run --debug"
echo ""
echo "2️⃣ 正确的权限测试方法："
echo "   • 不要立即测试所有权限"
echo "   • 依次测试每个功能："
echo "     - 点击位置相关功能 → 观察位置权限弹窗"
echo "     - 点击语音相关功能 → 观察麦克风权限弹窗"
echo "     - 在设置中开启通知 → 观察通知权限弹窗"
echo ""
echo "3️⃣ 如果权限弹窗仍未出现："
echo "   • 确认应用已彻底删除并重新安装"
echo "   • 检查iOS版本是否过低（需要iOS 12.0+）"
echo "   • 尝试在真机而非模拟器上测试"
echo ""
echo "4️⃣ 调试信息收集："
echo "   • 记录iOS版本号"
echo "   • 记录权限请求时的完整日志"
echo "   • 注意观察Xcode控制台的原生日志"
echo ""

echo "✅ =============== iOS权限修复脚本执行完成 ==============="
echo ""
echo "📋 关键提醒："
echo "   • iOS权限机制比Android更严格"
echo "   • 权限必须在用户主动操作后立即请求"
echo "   • 批量权限请求会被iOS系统拒绝"
echo "   • 应用启动时请求权限是错误的做法"
echo ""
echo "🎉 祝您修复成功！"
